# -*- coding: utf-8 -*-
def fatorial_iterativo(n):
	'''
	versao iterativa
	'''
	produto = 1
	for k in range(n,0,-1):
		produto *= k
		pass
	return produto
	
def fatorial(n):
	'''
	versao recursiva do calculo do futebol
	'''
	if n == 0:
		return 1
	else:
		return n * factorial(n-1)
		
def fatorial_tail(n):
	'''
	versao com tail recursion do fatorial
	'''
	def fact(i=n, acc=1):
		if i == 0:
			return acc
		else:
			return fact(i-1, ac*i)
	return fact()
